<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>

</body>
    <script>
        /*对象：具体的事物，包括属性和行为
        属性：对象中的变量 ；行为：属性中的方法（函数）
        如何创建对象：
        1.字面量创建对象，使用较多
        2.用构造函数创建对象
        3.用object（）创建对象
        */
       //字面量创建按对象
       let cat = {
        color:'white',
        eye:'brown',
        weight:'15kg',
        run:function(){
            console.log('running');
        }
       };
       //访问对象
       console.log(cat.color);//打印猫的颜色
       cat.run();
       let kq = {};//空对象
       console.log('-----用构造函数创建对象-------');
       //构造函数：是一种特殊的函数，能通过这个函数构造一个对象(new)。为区别于普通函数，一般构造函数名首字母大写
       /*
       s1：定义一个构造函数，在函数中描述对象的属性和行为
       s2:用关键字new构造一个对象
       */
      function Dog(name,age,weight,color){
        //this关键字:指当前对象
        this.name = name;
        this.age = age;
        this.weight = weight;
        this.color = color;
        this.dance = function(){
            //`${this.name}`..模板字符
            console.log(`${this.name}在跳舞.....`)
        }
      }
      let dog = new Dog('富贵',2,'10kg','白色');
      console.log(dog.name);
      console.log(dog.color);
      dog.dance();

      let wang = new Dog('旺财',3,'15kg','棕色');
      console.log(wang.weight);
      wang.dance();
      console.log('-----用object()创建对象-------')
      let obj = new Object();//实例化一个空的object
      obj.name = 'lihua';
      obj.age = 19;
      obj.cls = '计算机3班';
      obj.play = function(){
        console.log(obj.name+"在打游戏");
      };
      //访问对象
      console.log(obj.cls);
      obj.play();
      console.log('-----------');
      let news = {
        title:'上海：为世界城市提供三大“公共产品',
        date:'2024年10月31日',
        author:'王永前，姚玉洁........',
        content:'新华社北京10月31日电..........',
        read:function(){
            console.log('start:'+this.content);
        }
      }
      console.log(news.title);
      news.read;
      console.log(news['author']);
      console.log('-----------');
      //遍历对象for...in
      for(let i in news){
        console.log(i);  //获取该对象中所有属性和方法的名字
        //判断获取的值的数据类型是否为function，如果是则应该调用方法
        if(typeof news[i]==='function'){
            news[i]();
        }else{
            console.log(i+':'+news[i]);////获取该对象中所有属性和方法的值
        }
   
      }
    </script>

</html>